﻿#define _CRT_SECURE_NO_WARNINGS


//使用指针打印数组内容
//
//写一个函数打印arr数组的内容，不使用数组下标，使用指针。
//
//arr是一个整形一维数组

//#include <stdio.h>
//
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
//	int i = 0;
//	int size = sizeof(arr) / sizeof(int);
//	for (i = 0; i < size; i++)
//	{
//		printf("%d ", *(arr + i));
//	}
//	return 0;
//}
// 
// //////////////////////////////////////////////////////////////////////////////////////////////
// 
// 
//链接：https://www.nowcoder.com/questionTerminal/cc57022cb4194697ac30bcb566aeb47b
//来源：牛客网
//
//[编程题]字符逆序
//热度指数：254765时间限制：C / C++ 1秒，其他语言2秒空间限制：C / C++ 32M，其他语言64M
//算法知识视频讲解
//将一个字符串str的内容颠倒过来，并输出。
//
//数据范围：
//1
//≤
//�
//�
//�
//(
//    �
//    �
//    �
//)
//≤
//10000
//
//1≤len(str)≤10000
//
//输入描述 :
//输入一个字符串，可以有空格
//
//
//
//输出描述:
//输出逆序的字符串
//
//示例1
//输入
//I am a student
//输出
//tneduts a ma I
//示例2
//输入
//nowcoder
//输出
//redocwon
//#include <stdio.h>
//#include <string.h>
//int main() {
//    char str[100];
//    gets(str);
//    char* p = str;
//    char* left = str;
//    
//    while (*p != '\0')
//    {
//        p++;
//    }
//    p--;
//  
//    while (left < p)
//    {
//        char tmp = *left;
//        *left = *p;
//        *p = tmp;
//        left++;
//        p--;
//    }
//    puts(str);
//    return 0;
//}
//
// /////////////////////////////////////////////////////
// 
// 
// 
//打印菱形

//#include <stdio.h>
//
//int main()
//{
//    printf("请输入打印几层 ：\n");
//    int n = 0;
//    scanf("%d", &n);
//    int i = 0;
//    for (i = 0; i < n; i++)
//    {
//        int j = 0;
//        for (j = n - 1 - i; j >= 0; j--)
//        {
//            printf("   ");
//        }
//        int k = 0;
//        for (k = 0; k < 1 + 2 * i; k++)
//        {
//            printf(" * ");
//        }
//        for (j = n - 1 - i; j >= 0; j--)
//        {
//            printf("   ");
//        }
//        printf("\n");
//    }
//
//    i = 0;
//    for (i = n - 2; i >= 0; i--)
//    {
//        int j = 0;
//        for (j = 0 ; j < n - i; j++)
//        {
//            printf("   ");
//        }
//        int k = 0;
//        for (k = 1 + 2 * i - 1; k >= 0; k--)
//        {
//            printf(" * ");
//        }
//        for (j = 0; j < n - 1 - i; j++)
//        {
//            printf("   ");
//        }
//        printf("\n");
//    }
//    return 0;
//}

/////////////////////////////////////////////////////////////////////////////


//打印水仙花数
//
//求出0～100000之间的所有“水仙花数”并输出。
//
//“水仙花数”是指一个n位数，其各位数字的n次方之和确好等于该数本身，
//如 : 153＝1 ^ 3＋5 ^ 3＋3 ^ 3，则153是一个“水仙花数”。

//#include <stdio.h>
//#include <math.h>
//int digit(int n, int* arr)
//{
//	int i = 0;
//	while (n > 0)
//	{
//		*(arr+i++) = n % 10;
//		n /= 10;
//	}
//	return i;
//}
//int main()
//{
//	int i = 0;
//	for (i = 0; i < 100000; i++)
//	{
//		int arr[6] = { 0 };
//		int size = digit(i, arr);
//		int j = 0;
//		int sum = 0;
//		for (j = 0; j < size; j++)
//		{
//			sum += pow(*(arr + j),size);
//		}
//		if (sum == i)
//		{
//			printf("%d ", i);
//		}
//
//	}
//	return 0;
//}
//
//////////////////////////////////////////////////////////////////////
// 
// 
//计算求和
//
//求Sn = a + aa + aaa + aaaa + aaaaa的前5项之和，其中a是一个数字，
//
//例如：2 + 22 + 222 + 2222 + 22222

#include <stdio.h>
#include <math.h>
//a为输入的数字，为第n项的
long long int creat(long long int a, int n)
{
	if (n <= 1)
	{
		return a;
	 }
	else
	{
		return creat(a, n - 1) * pow(10, judge(a)) + a;
	}

	
}

//判断a是几位数
int judge(int a)
{
	if (a == 0)
	{
		return 0;
	}
	else
	{
		return judge(a / 10) + 1;
	}
}
int main()
{
	long long int a = 0;
	scanf("%lld", &a);
	
	
	int i = 0;
	long long int sum = 0;
	for (i = 1; i <= 5; i++)
	{
		printf("这是第i项 ：%lld \n", creat(a, i));
		sum += creat(a, i);
	}
	printf("前五项之和 ：%lld", sum);
	return 0;
}
